package com.da.mybatis.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * MyBatis Plus参数配置
 * http://mp.baomidou.com
 *
 * @author bianj
 * @version 1.0.0 2021-01-26
 */
@Slf4j
@Configuration
public class MybatisPlusConfiguration {
    /**
     * 初始化分页插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

    ///**
    // * 初始化公共字段自动填充功能
    // */
    //@Component
    //public class MetaObjectHandlerConfiguration implements MetaObjectHandler {
    //    @Override
    //    public void insertFill(MetaObject metaObject) {
    //        Date today = new Date();
    //        this.setFieldValByName("createDate", today, metaObject);
    //        this.setFieldValByName("modifyDate", today, metaObject);
    //
    //        long abiOneId = getAbiOneId();
    //        this.setFieldValByName("modifyBy", abiOneId, metaObject);
    //        this.setFieldValByName("createBy", abiOneId, metaObject);
    //    }
    //
    //    @Override
    //    public void updateFill(MetaObject metaObject) {
    //        Date today = new Date();
    //        this.setFieldValByName("modifyBy", today, metaObject);
    //
    //        long abiOneId = getAbiOneId();
    //        this.setFieldValByName("modifyBy", abiOneId, metaObject);
    //    }
    //}
    //
    ///** 获取当前用户AbiOneId */
    //public long getAbiOneId() {
    //    try {
    //        return ContextUtil.getAbiOneId();
    //    } catch (Throwable t) {
    //        log.error("获取当前用户AbiOneId异常：" + t.getMessage(), t);
    //    }
    //    return 0L;
    //}
    //
    ///** 获取当前用户信息 */
    //public BaseUserInfo getUserInfo() {
    //    try {
    //        return ContextUtil.getUserInfo();
    //    } catch (Throwable t) {
    //        log.error("获取当前用户信息异常：" + t.getMessage(), t);
    //    }
    //    return null;
    //}
}
